home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / util / libs / MultiReq.lha / MultiReq / C / TestProg.c < prev   
C/C++ Source or Header  |  1992-11-12  |  5KB  |  226 lines

  1. extern APTR OpenLibrary();
  2. extern struct Message *GetMsg();
  3. extern struct Window *OpenWindow();
  4.  
  5. extern UWORD FileRequester();
  6. extern void InitFileReq(), FreeFileReq();
  7.  
  8. extern struct TextFont *OpenFont();
  9.  
  10. /* Defined in TestGads.c */
  11.  
  12. extern struct Gadget ScreenGadg;
  13.  
  14. extern void CreateDisplay();
  15. extern struct Screen *GetScreen();
  16.  
  17. /* The Library Bases */
  18.  
  19. struct MultiReqBase *MultiReqBase;
  20. struct GfxBase *GfxBase;
  21. struct IntuitionBase *IntuitionBase;
  22.  
  23. /* some important pointers */
  24.  
  25. static struct FileReq *fr;
  26. static BOOL ScrnType;
  27. static BOOL ScrnMode;
  28. static struct Window *TestWindow;
  29. static struct RastPort *rp;
  30. static struct IntuiMessage *IntMsg;
  31.  
  32. /* my functions */
  33.  
  34. static void OpenAll(), CloseAll(), DoIDCMP(), CheckGadget(), OpenMultiReq(), SetGadgets();
  35.  
  36. /* my window */
  37.  
  38. static struct NewWindow NewTestWindow =
  39. {
  40.   62,0,
  41.   516,200,
  42.   0,1,
  43.   GADGETUP+CLOSEWINDOW,
  44.   WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+NOCAREREFRESH,
  45.   &ScreenGadg,
  46.   NULL,
  47.   (UBYTE *)"MultiReq Testprogram v1.00",
  48.   NULL,
  49.   NULL,
  50.   0,0,
  51.   0,0,
  52.   WBENCHSCREEN
  53. };
  54.  
  55. /* T80 Font */
  56.  
  57. static struct TextFont *T80Font;
  58. struct TextAttr Topaz80 =
  59. {
  60.   (STRPTR)"topaz.font",
  61.   TOPAZ_EIGHTY,
  62.   FS_NORMAL,
  63.   FPF_ROMFONT
  64. };
  65.  
  66. void main()
  67. {
  68.   OpenAll();
  69.  
  70.   DoIDCMP();
  71.  
  72.   CloseAll();
  73. }
  74.  
  75. static void OpenAll()
  76. {
  77.   if(!(IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",0L)))
  78.   {
  79.     puts("Can't open intuition.library !");
  80.     CloseAll();
  81.   }
  82.  
  83.   if(!(GfxBase=(struct GfxBase *)OpenLibrary("graphics.library",0L)))
  84.   {
  85.     puts("Can't open graphics.library !");
  86.     CloseAll();
  87.   }
  88.  
  89.   if(!(MultiReqBase=(struct MultiReqBase *)OpenLibrary("multireq.library",0L)))
  90.   {
  91.     puts("Can't open multireq.library !");
  92.     CloseAll();
  93.   }
  94.  
  95.   if(!(T80Font=OpenFont(&Topaz80)))
  96.   {
  97.     puts("Can't open topaz.font !");
  98.     CloseAll();
  99.   };
  100.  
  101.   InitFileReq(&fr,2L);
  102.   if(!fr)
  103.   {
  104.     puts("Unable to alloc Memory for the FileReq-structure !");
  105.     CloseAll();
  106.   }
  107.   SetGadgetBuffers(fr);
  108.  
  109.   if(!(TestWindow=OpenWindow(&NewTestWindow)))
  110.   {
  111.     puts("Can't open test window !");
  112.     CloseAll();
  113.   }
  114.   rp=TestWindow->RPort;
  115.  
  116.   SetFont(rp,T80Font);            /* I need no other fonts !! */
  117.  
  118.   CreateDisplay(TestWindow,rp);
  119.  
  120.   SetGadgets();
  121. }
  122.  
  123. static void CloseAll()
  124. {
  125.   if(T80Font) CloseFont(T80Font);
  126.   if(TestWindow) CloseWindow(TestWindow);
  127.   if(fr) FreeFileReq(&fr);
  128.   if(MultiReqBase) CloseLibrary(MultiReqBase);
  129.   if(GfxBase) CloseLibrary(GfxBase);
  130.   if(IntuitionBase) CloseLibrary(IntuitionBase);
  131.  
  132.   exit(0);
  133. }
  134.  
  135. static void DoIDCMP()
  136. {
  137.   register ULONG Class;
  138.   register UWORD GadgetID;
  139.   register struct Gadget *GadgetPtr;
  140.  
  141.   FOREVER
  142.   {
  143.     if(!(IntMsg=(struct IntuiMessage *)GetMsg(TestWindow->UserPort)))
  144.     {
  145.       Wait(1L << TestWindow->UserPort->mp_SigBit);
  146.       continue;
  147.     }
  148.  
  149.     Class=IntMsg->Class;
  150.     if(GadgetPtr=(struct Gadget *)IntMsg->IAddress)     /* avoid enforcer hits */
  151.       GadgetID=GadgetPtr->GadgetID;
  152.     else
  153.       GadgetID=0;
  154.  
  155.     ReplyMsg(IntMsg);
  156.  
  157.     if(Class==CLOSEWINDOW)
  158.       break;
  159.     else if(Class==GADGETUP)
  160.       CheckGadget(GadgetPtr,GadgetID);
  161.   }
  162. }
  163.  
  164.  
  165. static void CheckGadget(GadgetPtr,GadgetID)
  166. register struct Gadget *GadgetPtr;
  167. register USHORT GadgetID;
  168. {
  169.   switch(GadgetID)
  170.   {
  171.     case ID_FILEREQ:
  172.       OpenMultiReq();
  173.       break;
  174.     case ID_SCREEN:
  175.       ScrnType^=(BOOL)TRUE;
  176.       SetScreenType(TestWindow,rp,ScrnType,ScrnMode);
  177.       break;
  178.     case ID_SCRMODE:
  179.       ScrnMode^=(BOOL)TRUE;
  180.       SetScreenMode(rp,ScrnMode);
  181.       break;
  182.     case ID_DIRECTORY:
  183.       fr->ActiveList^=1;
  184.       SetDirectory(rp,(UWORD)fr->ActiveList);
  185.       break;
  186.     case ID_INFO:
  187.       fr->ShowInfo^=1;
  188.       SetInfo(rp,(UWORD)fr->ShowInfo);
  189.       break;
  190.     case ID_AUTO1:
  191.     case ID_AUTO2:
  192.       fr->FileList[GadgetID-ID_AUTO1].AutoRead^=1;
  193.       SetAutoRead(TestWindow,rp,GadgetPtr,fr->FileList[GadgetID-ID_AUTO1].AutoRead);
  194.       break;
  195.     case ID_CURRENT1:
  196.     case ID_CURRENT2:
  197.       GetCurrent(TestWindow,fr,GadgetID-ID_CURRENT1);
  198.       break;
  199.   }
  200. }
  201.  
  202. static void OpenMultiReq()
  203. {
  204.   register struct Screen *scrn;
  205.  
  206.   GetEdge(fr);
  207.   scrn=GetScreen(ScrnType,ScrnMode);
  208.   FileRequester(fr,scrn);        /* don't need returned status, cause it's */
  209.                     /* also stored in fr->ReturnStatus      */
  210.   if(scrn) CloseScreen(scrn);
  211.  
  212.   RefreshGadgets(&ScreenGadg,TestWindow,NULL);
  213.   SetGadgets();
  214.   WriteStatus(rp,fr);
  215. }
  216.  
  217. static void SetGadgets()
  218. {
  219.   SetScreenType(TestWindow,rp,ScrnType,ScrnMode);
  220.   SetDirectory(rp,(UWORD)fr->ActiveList);
  221.   SetInfo(rp,(UWORD)fr->ShowInfo);
  222.   SetAutoGadgets(TestWindow,rp,fr);
  223.   SetEdge(TestWindow,fr);
  224. }
  225.  
  226.